package com.pkk.spring.cloud.config.nacos.config;

import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.exception.NacosException;
import lombok.NonNull;

/**
 * nacos的配置提供类
 *
 * @author peikunkun
 * @version V1.0
 * @date 2021-01-26 15:46
 **/
public interface NacosConfigProvider {


  /**
   * 获取配置身份id
   * 同一个配置需要保证身份id一致,否则可能导致重复创建配置
   * 例如: {svervletAddress+namespace}
   *
   * @return java.lang.String
   * @Param nacosProperties:配置信息
   * @author peikunkun
   * @date 2021/1/26 0026 下午 3:49
   * @since
   */
  String getConfigId(@NonNull String serverAddr, @NonNull String namespace);


  /**
   * 获取全部配置
   *
   * @return java.lang.String
   * @Param configService
   * @Param group
   * @Param dataId
   * @author peikunkun
   * @date 2021/1/26 0026 下午 4:26
   * @since
   */
  String getConfig(ConfigService configService, String group, String dataId) throws NacosException;


  /**
   * 获取配置
   *
   * @return com.alibaba.nacos.api.config.ConfigService
   * @Param configId {@see @getConfigId}
   * @author peikunkun
   * @date 2021/1/26 0026 下午 4:27
   * @since
   */
  ConfigService getConfig(String configId) throws NacosException;


}
